<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <input type="text" id="btn" />
    <button onclick="fun(this)">111111111</button>
  </body>
  <script>
    // let arr = ['m', 'n', 'h']
    // let [a, b, c] = arr
    // console.log(a) // 0
    // console.log(b) // 1
    // console.log(c) // 2

    // let arr = [1, , 4]
    // let [a, b = '我是默认值', c] = arr
    // console.log(a) // '我是默认值'
    // console.log(b) // 1
    // console.log(c) // 2

    // 数组的拼接
    // let a = [0, 1, 2]
    // let b = [3, 4, 5]
    // let c = a.concat(b)
    // console.log(c) // [0,1,2,3,4,5]

    // let d = [...a, ...b]
    // console.log(d) // [0,1,2,3,4,5]
    // 数组的克隆
    // 假如我们简单地把一个数组赋值给另外一个变量
    //浅拷贝
    // let a = [0, 1, 2, 3]
    // let b = a
    // b.push(4)
    // console.log(a) // [0,1,2,3,4]
    // console.log(b) // [0,1,2,3,4]

    //深拷贝
    // let a = [0, 1, 2, 3]
    // let b = [...a]
    // b.push(4)
    // console.log(a) // [0,1,2,3]
    // console.log(b) // [0,1,2,3,4]

    // function fun() {
    //   //找文件的一些的代码
    //   if (meiyou文件了) {
    //     return
    //   } else {
    //     fun()
    //   }
    // }
    // fun()
    // let { name, age } = { age: 28, name: 'swr' }
    // console.log(name) // 'swr'
    // console.log(age) // 28
    // let name,
    //   age
    //   // 需要用圆括号，包裹起来
    // ;({ name, age } = { name: 'swr', age: 28 })
    // console.log(name) // 'swr'
    // console.log(age) // 28
    // let { length } = 'hello swr'
    // console.log(length) // 9

    // function ajax({ method, url, type = 'params' }) {
    //   console.log(method) // 'get'
    //   console.log(url) // '/'
    //   console.log(type) // 'params'
    // }

    // ajax({ method: 'get', url: '/' })

    // function sum() {
    //   console.log(arguments) // { '0': 1, '1': 2, '2': 3, '3': 4, '4': 5, '5': 6 }
    //   // 我们可以看出，arguments不是一个数组，而是一个伪数组
    //   let total = 0
    //   let { length } = arguments
    //   for (let i = 0; i < length; i++) {
    //     total += arguments[i]
    //   }
    //   return total
    // }

    // console.log(sum(1, 2, 3, 4, 5, 6)) // 21

    // function sum(...args) {
    //   // 使用...扩展运算符
    //   console.log(args) // [ 1, 2, 3, 4, 5, 6 ] args是一个数组
    //   console.log(eval(args.join('+')))
    //   return eval(args.join('+'))
    //   //   作用是把对应的字符串解析成js代码并运行
    // }

    // console.log(sum(1, 2, 3, 4, 5, 6)) // 21

    // var obj = { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6 }
    // var arr = [...obj]
    // console.log(arr)
    // 使用扩展运算符
    // let name123 = { name: '邵威儒' }
    // let age123 = { age: 28 }
    // let person = { ...name123, ...age123 }
    // person.name = 999
    // console.log(name123) // { name: '邵威儒', age: 28 }

    // let name = { name: '邵威儒' }
    // let age = { age: 28 }
    // let person = {}
    // let obj = Object.assign(person, name, age)
    // obj.name = '9999'
    // console.log(name)
    // 匿名箭头函数自调用

    // ;(() => {
    //   console.log(this)
    // })()

    // setInterval(function () {
    //   console.log(this)
    // }, 1000)
    // var that = this
    // document.getElementById('btn').onclick = function () {
    //     that.
    //   console.log(this)
    // }
    // document.getElementById('btn').onclick = () => {
    //   console.log(this)
    // }
    // var obj = {
    //   say: () => {
    //     console.log(this) //找到了
    //     setTimeout(() => {
    //       console.log(this) //没有this向外层找
    //     })
    //   },
    // }
    // obj.say()
    // var sum = (a) => a + 1
    // console.log(sum(999))
    let arr = [1, 2, 3, 4, 5]
    let sum = arr.reduce((tmp, item) => {
      console.log(tmp)
      return tmp + item
    })
    console.log(sum)
  </script>
</html>
